package com.example.im.mvp.presenter

import android.app.Activity
import android.content.Context
import com.example.im.xmpp.IMConnection
import com.example.im.mvp.base.BasePresenter
import com.example.im.mvp.view.IMainView
import com.example.im.db.DatabaseStorage

class MainPresenter(mContext: Context, mView: IMainView?) :
    BasePresenter<IMainView>(mContext, mView) {

    private var imConnection: IMConnection? = null

    init {
        imConnection = IMConnection.instance
    }

    override fun detachView() {
        super.detachView()
        this.disposable.clear()
    }

    fun automaticLogin() =
        getView().isAuthenticated(DatabaseStorage.isAccountAndPassword())

    fun mainApplyPermissions(activity: Activity) {
        val observable = this.applyPermissions(activity)
            .subscribe {
                if (!it) getView().onHint("该应用需要访问部分权限，请到 “应用信息 -> 权限” 中授予！")
            }
        this.disposable.add(observable)
    }

    fun automaticAddUser() {

//        val aCache = ACache.get(getContext())
//        val inviteCode = aCache.getAsString("INVITE_CODE")
//            ?: return
//
//        val observable = Observable.just(inviteCode)
//            .subscribeOn(Schedulers.io())
//            .map {
//                imConnection!!.userSearch(it)
//            }
//            .filter {
//                it.isNotEmpty()
//            }
//            .flatMap {
//                Observable.fromIterable(it)
//                    .lastElement()
//                    .toObservable()
//            }
//            .map {
//                with(FriendOrRoom(), {
//                    this.jid = it.getValues("jid")[0].toString()
//                    this.account = it.getValues("Username")[0].toString()
//                    this.nickname = it.getValues("Name")[0].toString()
//                    this.getFriendOrRoom()
//                })
//            }
//            .map {
//                imConnection!!.createEntry(it.account!!, it.nickname!!)
//            }
//            .observeOn(AndroidSchedulers.mainThread())
//            .subscribe(
//                {
//                    if (it) {
//                        aCache.clear()
//                    }
//                },
//                { LogUtils.e(it.message) }
//            )
//        this.disposable.add(observable)

    }

}